package com.xxxtea.security;

import com.xxxtea.entity.User;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 认证配置属性类
 * 
 * 用于配置认证相关的属性，包括：
 * - 模拟用户配置（用于开发测试）
 * - 默认用户配置（预配置的用户信息）
 * - 白名单URL配置（无需认证的接口路径）
 * 
 * 通过@ConfigurationProperties注解绑定配置文件中的auth前缀配置
 * 
 * @author badman
 * @since 1.0.0
 */
@Data
@Component
@ConfigurationProperties(prefix = "auth")
public class AuthProperties {
	
	/**
	 * 模拟用户
	 * 
	 * 用于开发测试环境，当用户未登录时返回此用户信息
	 * 在application.yml中配置，格式如：
	 * auth:
	 *   mock-user:
	 *     id: 1
	 *     nickname: "测试用户"
	 *     role: USER
	 */
	@ApiModelProperty("模拟用户")
	private User mockUser;

	/**
	 * 默认用户列表
	 * 
	 * 预配置的用户信息，这些用户使用固定的Token
	 * 在application.yml中配置，格式如：
	 * auth:
	 *   default-users:
	 *     - id: 1
	 *       nickname: "管理员"
	 *       token: "admin-token"
	 *       role: ADMIN
	 */
	@ApiModelProperty("默认用户")
	private List<User> defaultUsers;

	/**
	 * 白名单URL列表
	 * 
	 * 无需进行身份认证的接口路径
	 * 在application.yml中配置，格式如：
	 * auth:
	 *   white-url-list:
	 *     - "/api/login"
	 *     - "/api/register"
	 *     - "/api/public/**"
	 */
	@ApiModelProperty("白名单url")
	private List<String> whiteUrlList;
}
